package com.link.base.base.sms.service;


import com.link.base.base.sms.model.PushSms;
import com.link.base.sms.model.SmsSend;
import com.link.base.sms.model.Template;
import com.link.base.base.sms.model.MsgTemplate;
import com.link.core.basic.service.BasicService;

import java.util.List;
import java.util.Map;

/**
 * 模板消息发送service
 * @author 朱泊阳
 * @date 2018/11/5
 */

public interface TemplateService extends BasicService<Template> {

    /**
     * @author 王艳
     * @zhushi: 短信模板同步腾讯云状态
     */
    public void syncTencentStatus() throws Exception;

    /**
     * @author 王艳
     * @zhushi: 匹配状态
     */
    public String getStatus(String status);

    /**
     * 获取微信小程序参数
     *
     * @author guguishan
     * @date   2019/9/2 20:40
     * @param template 模板对象实例
     * @param openId OpenId
     * @param formId FormId，仅小程序消息使用，公众号置空
     * @param paramMap 模板参数【map集合】，key为model类名称（值列表配置），value为model实例对象
     * @param defaultPage 默认跳转页面
     */
    String toTemplateJsonString(Template template, String openId, String formId, Map<String, Object> paramMap, String defaultPage) throws Exception;

    /**
     *
     * @author guguishan
     * @date   2019/9/2 20:40
     * @param template 模板对象实例
     * @param openId OpenId
     * @param formId FormId，仅小程序消息使用，公众号置空
     * @param first 消息字段
     * @param remark 消息字段
     * @param params 模板参数【list集合】，按顺序赋值keyword1，keyword12，……
     * @param defaultPage 默认跳转页面
     */
    String toTemplateJsonString(Template template, String openId, String formId, String first, String remark,
                                List<String> params, String defaultPage) throws Exception;

    /**
     * 发送模板消息
     *
     * @author guguishan
     * @date   2019/9/5 11:38
     */
    boolean sendTemplateMessage(MsgTemplate template) throws Exception;

    /**
     * 定时模板消息发送
     *
     * @author guguishan
     * @date   2019/9/5 11:38
     */
    void sendScheduledSceneMessage() throws Exception;

    /**
     * 会员模块发送消息
     *
     * @author 汪大伟
     * @date   2019/9/5 11:38
     */
    void transWxTemplate(MsgTemplate msgTemplate) throws Exception;

    /**
     * 处理消息根据短信模板发送短信
     *
     * @author zhuboyang
     * @date   2019/10/11 19:42
     */
    SmsSend sendTmpSms(List<Object> objects, PushSms pushSms, List<String> phones, Map<String, String> paramMap) throws Exception;

    /**
     * 奖项发送微信消息
     *
     * @author NingLanhao
     * @date 2019-08-12 14:45
     * @param actId 互动ID
     * @param templateId 模板ID
     * @param wxAppId wxAppId
     * @param openId openId
     * @param formId formId
     * @return void
     * @throws Exception
     */
    void sendTempMsgForAct(Long actId, Long templateId,
                           String wxAppId, String openId, String formId) throws Exception;

    /**
     * 查询模板ID下的奖励信息
     *
     * @author NingLanhao
     * @date 2019-05-22 15:28
     * @param actId
     * @param templateId
     * @throws Exception`
     */
    List<String> queryActValueByTemplateId(Long actId, Long templateId) throws Exception;
}
